﻿#include <iostream>
#include <string>
#include <map>
using namespace std;

int main()
{
	//利⽤[]插⼊+修改功能，巧妙实现统计⽔果出现的次数
	string arr[] = { "苹果", "西瓜", "苹果", "西瓜", "苹果", 
		"苹果", "西瓜", "苹果", "香蕉", "苹果", "香蕉" };

	map<string, int> countMap;
	for (const auto str : arr)
	{
		//1.当str在countMap中不存在时，则插入，并且value=1
		//2.str存在时，则value++
		countMap[str]++;//是不是很方便？
	}

	for (const auto& e : countMap)
	{
		cout << e.first << ":" << e.second << endl;
	}

	return 0;
}



//#include <iostream>
//#include <map>
//using namespace std;
//
//int main()
//{
//	map<int, int> m({ {1,1},{2,1},{3,1} });
//	auto it1 = m.lower_bound(2);
//	auto it2 = m.upper_bound(2);
//
//	cout << it1->first<<":"<<it1->second << endl;
//	cout << it2->first << ":" << it2->second << endl;
//
//	return 0;
//}

//int main()
//{
//	map<string, int> m({ { "苹果",3 }, {"香蕉",2},{"西瓜",1},{"橘子",1} });
//	for (auto& e : m)
//	{
//		cout << e.first << ":" << e.second << endl;
//	}
//	cout << endl;
//
//	//erase可以配合find使用
//	auto pos = m.find("香蕉");
//	m.erase(pos);
//	for (auto& e : m)
//	{
//		cout << e.first << ":" << e.second << endl;
//	}
//	cout << endl;
//
//	//erase直接删除
//	m.erase("苹果");
//	for (auto& e : m)
//	{
//		cout << e.first << ":" << e.second << endl;
//	}
//	cout << endl;
//
//	return 0;
//}

//int main()
//{
//	map<string, int> m({ { "苹果",3 }, {"香蕉",2},{"西瓜",1},{"橘子",1} });
//	cout << m.count("苹果") << endl;//返回的是key的个数
//
//	return 0;
//}

//int main()
//{
//	map<string, int> m({ { "苹果",1 }, {"香蕉",1},{"西瓜",1},{"橘子",1} });
//	auto e = m.find("苹果");
//	cout << e->first << ":" << e->second << endl;
//
//	return 0;
//}

//int main()
//{
//	map<string, int> m;
//
//	m.insert({ "苹果",1 });
//	m.insert({ {"香蕉",1},{"西瓜",1},{"橘子",1},{"苹果",2} });
//
//	for (auto& e : m)
//	{
//		cout << e.first << ":" << e.second << endl;
//	}
//
//	return 0;
//}

//int main()
//{
//	//因为节点是pair类型，pair也需要使用{}进行构造
//	map<int, int> m({ {1,1},{2,1 },{3,1} });//initializer_list构造
//
//	//遍历，需要分别打印key和value
//	for (auto& e : m)
//	{
//		cout << e.first << ":" << e.second << endl;
//	}
//
//	return 0;
//}




//#include <iostream>
//#include <set>
//using namespace std;
//
//int main()
//{
//	multiset<int> s({ 6,6,6,8,8,8,8,8,8,8 });
//
//	s.erase(8);//删除所有的8
//	for (auto e : s)
//	{
//		cout << e << " ";
//	}
//	cout << endl;
//
//	return 0;
//}